<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    1. 全局this----window   严格模式 this--->window
    2. 普通函数执行/自执行函数/回调函数  this----window   严格模式 this--->undefined
    3. 特殊的回调函数 定时器  this----window   严格模式 this--->window
    4. DOM事件绑定   this-->绑定事件的元素 DOM对象
    5. 函数前面是否有点  点前面是谁this就是谁
    6. 箭头函数  箭头函数没有this,this--->上级作用域(上下文)中的this
    7. 构造函数 this--->实例对象   new 函数名()
    8. call、apply、bind 会修改this的指向
    
    <button id="btn">点击</button>
    <script>
    //    1. 全局this----window   严格模式 this--->window
        //   "use strict";
        //  console.log(this);

   //     2. 普通函数执行  this----window   严格模式 this--->undefined
        //   function show(){
        //     console.log(this);
        //   }
        //   show();

        //3. DOM事件绑定   this-->绑定事件的元素 DOM对象
        // btn.onclick=function(){
        //     console.log(this);
        // }
        
        //4. 自执行函数  this----window   严格模式 this--->undefined
        //"use strict";
        // (function(){
        //     console.log(this);
        // })()

        // 5.回调函数 一个函数是另一个函数的参数  this----window   严格模式 this--->undefined
        // var arr=[1,2,3];
        // arr.forEach(function(item,index,arr){
        //    console.log(this);
        // })

        //6.特殊的回调函数 定时器  this----window   严格模式 this--->window
        // setTimeout(function(){
        //     console.log(this);
        // },100)

        //7.函数前面是否有点  点前面是谁this就是谁
        // var obj={
        //     fn:function(){
        //         console.log(this);
        //     }
        // }
        // obj.fn();
        //Array.prototype.sort()  this--->Array.prototype

        //8.箭头函数  箭头函数没有this,this--->上级作用域(上下文)中的this
        // "use strict";
        // var obj={
        //     fn:()=>{
        //         console.log(this);
        //     }
        // }
        // obj.fn();//this-->window

        // 9.构造函数 this--->实例对象
        // new 函数名()

        // 10.call、apply、bind 会修改this的指向
        

    </script>
</body>
</html>